from strategy.handler.BuySeller import BuySeller


# 固定金额买卖方法, 每次买入固定金额(1000元,allin式购买)的股票, 买入卖出都由策略决定
class FixedMoneyBuySeller(BuySeller):
    singleMoney = 10000
    profitRate = 0

    def buy(self, price):
        super().buy(price)
        self.inputAll += self.singleMoney
        self.holdCnt += self.singleMoney / price
        self.holdCost += self.singleMoney
        # self.log('买入:{cost}'.format(cost=round(self.singleMoney, 2)), self.manager.tradeLogLevel)
        return

    def sell(self, price):
        if self.holdCnt == 0:
            return
        super().sell(price)
        value = self.holdCnt * price  # 持仓数*价格
        self.outputAll += value
        self.profitRate += (value - self.holdCost) / self.holdCost
        self.holdCnt = 0
        self.holdCost = 0

    def end(self):  # 结算
        super().end()
# rate = round((avg - buyPrice) / buyPrice, 3)
# rateSum += rate
# self.profitRate = rateSum / len(self.buy2Finish)


# 盈利率计算修订
# 盈利计算方法
# a. 盈利*买的次数/投入总金额
# b. 盈利/投入总金额
#
# 交易序号: 次数 盈利		//设每次投入1000 //todo 暂时策略都是买一次,卖一次可用, 当买n次卖一次就不适用了,因为买n次的成本高了
# 交易1: 2 800	每次赚400	a:80%, b:40%
# 交易2: 8 800	每次赚100	a:80%, b:10%
# 只要在同一个时间区间, 他们的盈利率应该是一样, 但是b盈利计算方法收益就为10%
# 交易次数越频,在*买的次数后虽然盈利会增加, 但是基数投入金额也会相应增加
